//
//  MineViewController.swift
//  ios_swift_demo1
//
//  Created by liutao on 2020/7/14.
//  Copyright © 2020 lt. All rights reserved.
//

import UIKit

class MineViewController: BasePageViewController {
    
    //private私有化该属性，只能当前类访问
    private lazy var myArray:Array = {
        return [
            [["icon":"mine_vip", "title": "我的VIP"],
             ["icon":"mine_coin", "title": "充值妖气币"]],
            
            [["icon":"mine_accout", "title": "消费记录"],
             ["icon":"mine_subscript", "title": "我的订阅"],
             ["icon":"mine_seal", "title": "我的封印图"]],
            
            [["icon":"mine_message", "title": "我的消息/优惠券"],
             ["icon":"mine_cashew", "title": "妖果商城"],
             ["icon":"mine_freed", "title": "在线阅读免流量"]],
            
            [["icon":"mine_feedBack", "title": "帮助中心"],
             ["icon":"mine_mail", "title": "我要反馈"],
             ["icon":"mine_judge", "title": "给我们评分"],
             ["icon":"mine_author", "title": "成为作者"],
             ["icon":"mine_setting", "title": "设置"]]
        ]
    }()
    
    private lazy var headerView = {
        return MineHeaderView(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 200))
    }()
    
    private lazy var navigationBarY :CGFloat = {
        
           return navigationController?.navigationBar.frame.maxY ?? 0
    }()
    
    lazy var tableViwe :UITableView = {
        let tableView = UITableView(frame: .zero,style: .grouped)  //grouped 分组
        tableView.backgroundColor = UIColor.background
        tableView.delegate = self
        tableView.dataSource = self
        tableView.register(cellType: BaseTableViewCell.self)
        return tableView
    }()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //通过设置此属性，你可以指定view的边（上、左、下、右）延伸到整个屏幕。
        edgesForExtendedLayout = .top
        // Do any additional setup after loading the view.
    }
    
    override func setupLayout() {
        view.addSubview(tableViwe)
        tableViwe.snp.makeConstraints { (make) in
            make.edges.equalTo(self.view.usnp.edges).priority(.low)
            make.top.equalToSuperview()
        }
        tableViwe.parallaxHeader.view = headerView
        tableViwe.parallaxHeader.height = 200
        tableViwe.parallaxHeader.minimumHeight = navigationBarY
        tableViwe.parallaxHeader.mode = .fill
    }
    
    //这里重制AppBar，将它置空
    override func configNavigationBar() {
        super.configNavigationBar()
        navigationController?.barStyle(.clear)
        tableViwe.contentOffset = CGPoint(x: 0, y: -tableViwe.parallaxHeader.height)
    }
    
}


//列表数据源
extension MineViewController :UITableViewDelegate ,UITableViewDataSource{
    
    //列表滚动监听
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
          if scrollView.contentOffset.y >= -(scrollView.parallaxHeader.minimumHeight) {
              navigationController?.barStyle(.theme)
              navigationItem.title = "我的"
          } else {
              navigationController?.barStyle(.clear)
              navigationItem.title = ""
          }
      }
      
      //设置表格中的章节（section）个数。
      func numberOfSections(in tableView: UITableView) -> Int {
          return myArray.count
      }
      
      //设置某一章节（section）中的单元格数量，必须实现。
      func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
          let sectionArray = myArray[section]
          return sectionArray.count
      }
      
        //设置某一索引下的章节头部的高度。

      func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
          return CGFloat.leastNormalMagnitude
      }
      
      func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
          return nil
      }
      
      func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
          let cell = tableView.dequeueReusableCell(for: indexPath, cellType: BaseTableViewCell.self)
          cell.accessoryType = .disclosureIndicator
          cell.selectionStyle = .default
          let sectionArray = myArray[indexPath.section]
          let dict: [String: String] = sectionArray[indexPath.row]
          cell.imageView?.image =  UIImage(named: dict["icon"] ?? "")
          cell.textLabel?.text = dict["title"]
          return cell
      }
      
    //当用户点击选择指定索引位置的单元格时，调用此方法。
      func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
          tableView.deselectRow(at: indexPath, animated: true)
      }
      
    //设置某一索引下的章节尾部的高度。
      func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
          return 10
      }
      
      func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
          return nil
      }
    
}
